package com.piggy.logi.sys.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.piggy.common.core.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.NotBlank;
import java.util.Date;

/**
 * 承运商司机信息视图对象 logi_carrier_driver
 */
@Data
@Accessors(chain = true)
@ApiModel("承运商司机信息视图对象")
public class LogiCarrierDriverVo {

	private static final long serialVersionUID = 1L;

	/** id */
	@ApiModelProperty("承运商司机id")
	@JsonFormat(shape = JsonFormat.Shape.STRING)
	private Long driverId;

	/** deptId */
	@ApiModelProperty("部门ID")
	@JsonFormat(shape = JsonFormat.Shape.STRING)
	private Long deptId;

	/** deptId */
	@ApiModelProperty("用户ID")
	@JsonFormat(shape = JsonFormat.Shape.STRING)
	private Long userId;

	/** 司机姓名 */
	@ApiModelProperty("司机姓名")
	private String driverName;

	/** 性别 */
	@ApiModelProperty("性别")
	private String sex;

	/** 身份证号 */
	@ApiModelProperty("身份证号")
	private String idCardNo;

	/** 司机类型 */
	@ApiModelProperty("司机类型")
	private String driverType;

	/** 地址区县Id */
	@Excel(name = "地址区县Id")
	@ApiModelProperty("地址区县Id")
	@JsonFormat(shape = JsonFormat.Shape.STRING)
	private Integer addressDistrictId;
	private String addressDistrictName;

	/** 地址详细 */
	@Excel(name = "地址详细")
	@ApiModelProperty("地址详细")
	private String address;

	/** 地址经度 */
	@Excel(name = "地址经度")
	@ApiModelProperty("地址经度")
	@JsonFormat(shape = JsonFormat.Shape.STRING)
	private Float addressLng;

	/** 地址纬度 */
	@Excel(name = "地址纬度")
	@ApiModelProperty("地址纬度")
	@JsonFormat(shape = JsonFormat.Shape.STRING)
	private Float addressLat;

	/** 手机号码 */
	@ApiModelProperty("手机号码")
	@NotBlank(message = "手机号码不能为空")
	private String phoneNumber;

	/** 驾照类型 */
	@ApiModelProperty("驾照类型")
	private String licenseType;

	/** 驾驶证号 */
	@ApiModelProperty("驾驶证号")
	private String driverLicenseNo;

	/** 驾龄 */
	@ApiModelProperty("驾龄")
	@JsonFormat(shape = JsonFormat.Shape.STRING)
	private Integer drivingYears;

	/** 驾驶证起始日期 */
	@ApiModelProperty("驾驶证起始日期")
	@JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
	@DateTimeFormat(pattern = "yyyy-MM-dd")
	private Date driverLicenseStartDate;

	/** 驾驶证到期日期 */
	@ApiModelProperty("驾驶证到期日期")
	@JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
	@DateTimeFormat(pattern = "yyyy-MM-dd")
	private Date driverLicenseExpireDate;

	/** 车牌号 */
	@ApiModelProperty("车牌号")
	private String plateNumber;

	/** 车辆类型 */
	@ApiModelProperty("车辆类型")
	private String carType;

	@ApiModelProperty("车长")
	private String carLength;

	/** 行驶证号 */
	@ApiModelProperty("行驶证号")
	private String drivingLicenseNo;

	/** 是否为自有车辆(0否1是) */
	@ApiModelProperty("是否为自有车辆(0否1是)")
	private String ownVehicle;

	/** 头像附件 */
	@ApiModelProperty("头像附件")
	private String avatarAttachment;

	/** 身份证附件 */
	@ApiModelProperty("身份证附件")
	private String idCardAttachment;

	@ApiModelProperty("身份证附件")
	private String idCardReverseAttachment;

	/** 驾驶证附件 */
	@ApiModelProperty("驾驶证附件")
	private String driverLicenseAttachment;

	/** 人照合一附件 */
	@ApiModelProperty("人照合一附件")
	private String personWithCarAttachment;

	/** 其他附件 */
	@ApiModelProperty("其他附件")
	private String otherAttachment;

	/** 开通账号 */
	@ApiModelProperty("开通账号")
	private String openAccount;

	/** 启动状态 */
	@ApiModelProperty("启动状态")
	@JsonFormat(shape = JsonFormat.Shape.STRING)
	private Integer enableStatus;

	/** 备注字段 */
	@ApiModelProperty("备注字段")
	private String remark;

	@Excel(name = "创建时间")
	@ApiModelProperty("创建时间")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	private Date createTime;

	@Excel(name = "创建人")
	@ApiModelProperty("创建人")
	private String createBy;

	@Excel(name = "更新时间")
	@ApiModelProperty("更新时间")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	private Date updateTime;

	@Excel(name = "更新人")
	@ApiModelProperty("更新人")
	private String updateBy;
}
